﻿using LPPA.Facturacion.BusinessLayer;
using LPPA.Facturacion.Services.Logger;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LPPA.Facturacion.UI.Views.Titulares
{
	public partial class TitularView : System.Web.UI.Page
	{
		protected void Page_Load(object sender, EventArgs e)
		{
            btnEditar.Click += btnEditar_Click;
            btnGuardarCambios.Click += btnGuardarCambios_Click;

            if (Request.QueryString["Edit"] != null)
            {
                btnEditar.Visible = false;
                btnGuardarCambios.Enabled = true;

                txtDireccion.Enabled = true;
                txtFechaNacimiento.Enabled = true;
                txtMail.Enabled = true;
                txtNombre.Enabled = true;
                txtTelefono.Enabled = true;
                txtWeb.Enabled = true;
                btnGuardarCambios.Visible = true;
            }
            else {
                btnGuardarCambios.Visible = false;
            }

            if (Request.QueryString["Id"] == null)
            {
                lblErrorForm.Visible = true;
                pnlDataForm.Visible = false;
            }

            if (!Page.IsPostBack)
            {
             

                var titularId = Convert.ToInt32(Request.QueryString["Id"]);

                var titular = new TitularService().GetById(titularId);

                txtDireccion.Text = titular.Direccion;
                txtFechaNacimiento.Text = (titular.FechaNacimiento.HasValue) ? titular.FechaNacimiento.Value.ToShortDateString() : string.Empty;
                txtMail.Text = titular.Mail;
                txtNombre.Text = titular.Nombre;
                txtTelefono.Text = titular.Telefono;
                txtWeb.Text = titular.Web;


                this.BindMedidores();

                pnlDataForm.Visible = true;
            }
		}

        private void BindMedidores()
        {
            var titularId = Convert.ToInt32(Request.QueryString["Id"]);
            var medidoresTitular = MedidorService.GetMedidoresByTitular(titularId);

            foreach (var medidor in medidoresTitular)
            {
                var linkFacturar = ResolveUrl("/Views/Facturacion/GeneraFactura.aspx?MedidorId=" + medidor.NumeroMedidor.ToString());
                var linkVermMas = ResolveUrl("/Views/Medidores/Medidor.aspx?Id=" + medidor.NumeroMedidor.ToString());

                var medidorMarkUp = new StringBuilder();
                medidorMarkUp.Append("<div id='medidor'>");
                medidorMarkUp.Append("<p>Medidor ID: "+ medidor.NumeroMedidor +"</p> <p>Tipo: "+medidor.TipoMedidorDisplay+"</p>");
                medidorMarkUp.Append("<div class='buttonsTitularView'>");
                medidorMarkUp.Append("<a href='"+linkVermMas+"' class='linkAsButton' >Ver +</a></div></div>");

                litMedidores.Text += medidorMarkUp.ToString();
            }

           
        }

        void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            try
            {
                var titularId = Convert.ToInt32(Request.QueryString["Id"]);

                new TitularService().Update(new BizEntities.TitularBIZ()
                {
                    CodigoTitular = titularId,
                    Web = txtWeb.Text,
                    Telefono = txtTelefono.Text,
                    Nombre = txtNombre.Text,
                    Mail = txtMail.Text,
                    FechaNacimiento = (!string.IsNullOrEmpty(txtFechaNacimiento.Text)) ? DateTime.Parse(txtFechaNacimiento.Text) : DateTime.MinValue,
                    Direccion = txtDireccion.Text
                });

                Response.Redirect(ResolveUrl("/Views/Titulares/TitularView.aspx?Id=" + titularId.ToString()));
            }
            catch (Exception ex)
            {
                var titularId = Convert.ToInt32(Request.QueryString["Id"]);

                LogManager.WriteError("Error al actualizar titular: " + Request.QueryString["Id"].ToString() , ex.StackTrace.ToString());
                lblErrorForm.Text = "Error al actualizar titular: " + Request.QueryString["Id"].ToString()  + ". Por favor, verifique los campos.";
                lblErrorForm.Visible = true;

                Response.Redirect(ResolveUrl("/Views/Titulares/TitularView.aspx?Id=" + titularId.ToString()));
            }

             
        }

        void btnEditar_Click(object sender, EventArgs e)
        {
            var titularId = Request.QueryString["Id"];
            Response.Redirect(ResolveUrl("/Views/Titulares/TitularView.aspx?Id=" + titularId.ToString() + "&Edit=True"));
        }
	}
}